home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / AMIGA / AMICUS / AMICUS15.ADF / AmigaBasicProgs / Stats < prev    next >
Text File  |  1988-04-20  |  11KB  |  487 lines

  1. 'Softball Stats
  2.  
  3. ON BREAK GOSUB Quit:BREAK ON
  4. PALETTE 0,.4,.4,.4
  5. DIM Stuff(15,20,7), Players$(20)
  6. I=0:X=0:Y=0:Z=0:J=0:G=0:P=0:S=0:a$="":OldItem=1
  7. WINDOW 1,"Softball Stats"
  8. CLS:PRINT "Softball Stats"
  9. GOSUB FirstMenu
  10. GOSUB Check
  11. GOSUB Ld
  12. GOTO Main
  13.  
  14. FirstMenu:
  15. MENU 1,0,0,"Project"
  16. MENU 1,1,1,"Print  "
  17. MENU 1,2,1,""
  18. MENU 1,3,1,"Quit   "
  19. MENU 2,0,0,"Add new..."
  20. MENU 2,1,1,"Players   "
  21. MENU 2,2,1,"Stats     "
  22. MENU 3,0,0,"Sort by..."
  23. MENU 3,1,2,"   Player    "
  24. MENU 3,2,1,"   At Bats   "
  25. MENU 3,3,1,"   Hits      "
  26. MENU 3,4,1,"   Runs      "
  27. MENU 3,5,1,"   RBI       "
  28. MENU 3,6,1,"   BB        "
  29. MENU 3,7,1,"   AVG       "
  30. MENU 4,0,0,""
  31. RETURN
  32.  
  33. Main:
  34. ON ERROR GOTO 0
  35. MENU 1,0,1:MENU 2,0,1:MENU 3,0,1
  36. Main2:
  37. MenuID=MENU(0)
  38. IF MenuID=0 THEN Main2
  39. MenuItem=MENU(1)
  40. MENU 1,0,0:MENU 2,0,0:MENU 3,0,0
  41. ON MenuID GOSUB Project,Add,SortType
  42. GOTO Main
  43.  
  44. Project:
  45. ON MenuItem GOSUB Disp,,Quit
  46. RETURN
  47.  
  48. Add:
  49. ON MenuItem GOSUB Players,Stats
  50. RETURN
  51.  
  52. Players:
  53. P=P+1
  54. IF P>20 THEN RETURN
  55. CLS:PRINT "Softball Stats"
  56. PRINT :PRINT :PRINT 
  57. PRINT "Enter Player's Name: ";
  58. Question ""
  59. Players$(P)=Answer$
  60. IF Players$(P)="" THEN P=P-1:CLS:PRINT "Softball Stats":RETURN
  61. GOTO Players
  62.  
  63. Stats:
  64. G=G+1
  65. FOR I=1 TO P
  66. TryAgain:
  67. CLS
  68. PRINT "Enter Stats For Game";G
  69. LOCATE 10,1
  70. PRINT "Did ";Players$(I);" play? ";
  71. Question "YES":Answer$=UCASE$(Answer$)
  72. IF LEFT$(Answer$,1)<>"Y" THEN NoBats
  73. CLS:PRINT "Enter Game Stats For Each Player"
  74. LOCATE 8,1
  75.   PRINT " Player:  ";Players$(I)
  76.   PRINT "At Bats: ";:Question ""
  77.   Stuff(G,I,1)=VAL(Answer$)
  78.   PRINT "   Hits: ";:Question ""  
  79.   Stuff(G,I,2)=VAL(Answer$)
  80.   PRINT "   Runs: ";:Question ""
  81.   Stuff(G,I,3)=VAL(Answer$)
  82.   PRINT "    RBI: ";:Question ""
  83.   Stuff(G,I,4)=VAL(Answer$)
  84.   PRINT "     BB: ";:Question ""
  85.   Stuff(G,I,5)=VAL(Answer$)
  86.   IF Stuff(G,I,1)=0 THEN Check2
  87.   Stuff(G,I,6)=(Stuff(G,I,2)/Stuff(G,I,1))*1000
  88. Check2:
  89. PRINT :PRINT
  90. PRINT SPC(30);"Is This Correct? (Y/N)"
  91. PRINT SPC(39);
  92. Question "YES"
  93. Answer$=UCASE$(Answer$)
  94. IF LEFT$(Answer$,1)<>"Y" THEN TryAgain 
  95. NoBats:
  96.  NEXT I
  97.  
  98. FOR X=1 TO 6
  99.   Stuff(0,0,X)=0
  100.  NEXT X
  101.  
  102. FOR X=1 TO P
  103.   FOR Y=1 TO 5
  104.     Stuff(0,X,Y)=Stuff(0,X,Y)+Stuff(G,X,Y)
  105.     Stuff(0,0,Y)=Stuff(0,0,Y)+Stuff(0,X,Y)
  106.  NEXT Y,X
  107. FOR X=1 TO P
  108.   IF Stuff(0,X,1)=0 THEN Skip
  109.   Stuff(0,X,6)=(Stuff(0,X,2)/Stuff(0,X,1))*1000
  110. Skip:
  111.  NEXT X
  112. Stuff(0,0,6)=(Stuff(0,0,2)/Stuff(0,0,1))*1000
  113. CLS:PRINT "Enter Stats For Game";G
  114. LOCATE 11,30:PRINT "Writing Stats To Disk"
  115. GOSUB Sv
  116. CLS:PRINT "Softball Stats"
  117. RETURN
  118.  
  119. Quit:
  120. MENU RESET
  121. CLOSE #2
  122. COLOR 1,0
  123. PALETTE 0,0,.34,.6
  124. CLS
  125. END
  126.   
  127. SUB Question (Prompt$) STATIC
  128. SHARED Answer$
  129. Flag=0
  130. Y=POS(0):X=CSRLIN:StartY=Y:StartX=X
  131. Answer$=Prompt$:PRINT Answer$;
  132. Y=POS(0):X=CSRLIN:Curs=8*Y
  133. LINE (Curs-8,8*X-8)-(Curs-2,8*X-1),3,bf
  134. Z$=""
  135. Loop2:
  136. Z$=INKEY$
  137. IF Z$="" THEN Loop2
  138. IF Z$=CHR$(8) THEN
  139.   LOCATE StartX,StartY
  140.   PRINT SPACE$(LEN(Answer$)+1);
  141.   LOCATE StartX,StartY
  142.   Answer$=""
  143.  END IF
  144. IF Z$=CHR$(27) THEN
  145.   LOCATE StartX,StartY
  146.   PRINT SPACE$(LEN(Answer$)+1);
  147.   LOCATE StartX,StartY
  148.   Answer$=""  
  149.   EXIT SUB
  150.  END IF
  151. Temp$=Z$:Add=1
  152. Entry:
  153. WHILE Z$<>CHR$(13)
  154. Y=POS(0):X=CSRLIN:Curs=8*Y
  155. LINE (Curs-8,8*X-8)-(Curs-2,8*X-1),3,bf
  156. Loop:
  157. Z$=INKEY$
  158. IF Add=1 THEN Z$=Temp$:Add=0
  159. IF Z$="" THEN Loop
  160. IF Z$=CHR$(27) THEN  
  161.   IF Answer$="" AND Flag=1 THEN
  162.     Z$=CHR$(13)
  163.    ELSEIF Answer$="" AND Flag=0 THEN
  164.     Z$="":Answer$=Prompt$:Flag=1:PRINT Answer$;:GOTO Entry
  165.   END IF
  166.   IF Answer$<>"" THEN
  167.     LOCATE StartX,StartY
  168.     PRINT SPACE$(LEN(Answer$)+1);
  169.     LOCATE StartX,StartY
  170.     Answer$=""
  171.     Y=POS(0):X=CSRLIN:Curs=8*Y
  172.     LINE (Curs-8,8*X-8)-(Curs-2,8*X-1),3,bf
  173.     GOTO Loop
  174.    END IF
  175.  END IF
  176. IF Z$=CHR$(8) AND LEN(Answer$)>=1 THEN
  177.   LINE (Curs-8,8*X-8)-(Curs-2,8*X-1),0,bf
  178.   PRINT CHR$(8);
  179.   Answer$=LEFT$(Answer$,LEN(Answer$)-1)
  180.   Curs=Curs-8
  181.   LINE (Curs-8,8*X-8)-(Curs-2,8*X-1),3,bf
  182.   GOTO Loop
  183.  END IF
  184. IF ASC(Z$)>=32 AND ASC(Z$)<=126 THEN
  185.  Answer$=Answer$+Z$
  186.  PRINT Z$;
  187.  Z$=""
  188. END IF
  189. WEND
  190. LINE (Curs-8,8*X-8)-(Curs-2,8*X-1),0,bf
  191. END SUB
  192.  
  193. Sv:
  194. OPEN "Statistics" FOR OUTPUT AS #2
  195. PRINT#2,G,P
  196. FOR Y=0 TO P
  197.     PRINT#2,Players$(Y)
  198. NEXT Y
  199. FOR X=0 TO G
  200.   FOR Y=0 TO P
  201.     FOR Z=1 TO 6
  202.       PRINT#2,Stuff(X,Y,Z)
  203.  NEXT Z,Y,X
  204. CLOSE #2
  205. RETURN
  206.  
  207. Ld:
  208. CLS
  209. PRINT "Softball Stats"
  210. LOCATE 11,28:PRINT "Reading File: Statistics"
  211. OPEN "Statistics" FOR INPUT AS #2
  212. INPUT#2,G
  213. IF G=0 THEN CLOSE #2:CLS:PRINT "Softball Stats":RETURN
  214. INPUT#2,P
  215. FOR Y=0 TO P
  216.   INPUT#2,Players$(Y)
  217.  NEXT Y
  218. FOR X=0 TO G
  219.   FOR Y=0 TO P  
  220.     FOR Z=1 TO 6
  221.       INPUT#2,Stuff(X,Y,Z)
  222.  NEXT Z,Y,X 
  223. CLOSE #2
  224. CLS:PRINT "Softball Stats"
  225. RETURN
  226.  
  227. Check:
  228. ON ERROR GOTO NotThere
  229. OPEN "Statistics" FOR INPUT AS #2
  230. CLOSE #2
  231. ON ERROR GOTO 0:RETURN
  232.  
  233. NotThere:
  234. CLOSE #2
  235. IF ERR=53 THEN RESUME FirstTime
  236. STOP
  237.  
  238. FirstTime:
  239. ON ERROR GOTO 0
  240. G=0:LOCATE 11,30:PRINT "Creating File"
  241. OPEN "Statistics" FOR OUTPUT AS #2
  242. PRINT#2,G:CLOSE #2
  243. CLS:PRINT "Softball Stats"
  244. RETURN
  245.  
  246. Disp:
  247. CLS
  248. PRINT "Print/Display"
  249. LOCATE 11,30
  250. PRINT "S";:COLOR 2,0:PRINT "creen or ";:COLOR 1,0:PRINT "P";:COLOR 2,0:PRINT "rinter":COLOR 1,0
  251. GetKey:
  252. a$=UCASE$(INKEY$)
  253. IF a$="P" THEN Prtr
  254. IF a$<>"S" THEN GetKey
  255. Scrn:
  256. CLS
  257. PRINT "Display to SCREEN"
  258. LOCATE 11,30
  259. PRINT "C";:COLOR 2,0:PRINT "umulative or ";:COLOR 1,0:PRINT "G";:COLOR 2,0:PRINT "ame":COLOR 1,0
  260. GetKey2:
  261. a$=UCASE$(INKEY$)
  262. IF a$="C" THEN Cum
  263. IF a$<>"G" THEN GetKey2
  264. Gam:
  265. CLS
  266. PRINT "Softball Statistics By Game"
  267. LOCATE 11,30:PRINT "Show Which Game? ";
  268. Question ""
  269. IF VAL(Answer$)>G OR VAL(Answer$)<0 THEN Gam
  270. IF Answer$="" OR Answer$="0" THEN
  271.   CLS
  272.   PRINT "Softball Stats"
  273.   RETURN
  274.  END IF
  275. Game=VAL(Answer$)
  276. GOSUB Sort
  277. CLS:PRINT "Softball Statistics For Game";Game
  278. COLOR 2,0
  279. PRINT "Name";SPC(22);"AB";SPC(8);"H";SPC(8);"R";SPC(6);"RBI";SPC(7);"BB";SPC(6)"AVG";
  280. COLOR 1,0
  281. IF OldItem=1 THEN Regular
  282. FOR Y=P TO 1 STEP -1
  283.   PRINT:PRINT Players$(Y);TAB(25);   
  284.   FOR Z=1 TO 6
  285.     PRINT USING "####";Stuff(Game,Y,Z);:PRINT SPC(5);
  286.  NEXT Z,Y
  287. LOCATE 23,26:COLOR 3,0:PRINT "Press <ESC> To Return To Top";
  288. WHILE a$<>CHR$(27)
  289.   a$=INKEY$
  290.  WEND
  291. CLS:COLOR 1,0
  292. PRINT "Softball Stats"
  293. RETURN
  294. Regular:
  295. FOR Y=1 TO P
  296.   PRINT:PRINT Players$(Y);TAB(25);   
  297.   FOR Z=1 TO 6
  298.     PRINT USING "####";Stuff(Game,Y,Z);:PRINT SPC(5);
  299.  NEXT Z,Y
  300. LOCATE 23,26:COLOR 3,0:PRINT "Press <ESC> To Return To Top";
  301. WHILE a$<>CHR$(27)
  302.   a$=INKEY$
  303.  WEND
  304. CLS:COLOR 1,0
  305. PRINT "Softball Stats"
  306. RETURN
  307.  
  308. Cum:
  309. CLS:Game=0
  310. PRINT "Cumulative Softball Statistics Through Game";G
  311. GOSUB Sort:CLS
  312. PRINT "Cumulative Softball Statistics Through Game";G
  313. COLOR 2,0
  314. PRINT "Name";SPC(22);"AB";SPC(8);"H";SPC(8);"R";SPC(6);"RBI";SPC(7);"BB";SPC(6)"AVG";
  315. COLOR 1,0
  316. IF OldItem=1 THEN Regular2
  317. FOR Y=P TO 1 STEP -1
  318.   PRINT:PRINT Players$(Y);TAB(25);   
  319.   FOR Z=1 TO 6
  320.     PRINT USING "####";Stuff(0,Y,Z);:PRINT SPC(5);
  321.  NEXT Z,Y
  322. PRINT
  323. COLOR 2,0
  324. PRINT "Totals";TAB(25);
  325. FOR X=1 TO 6
  326.   PRINT USING "####";Stuff(0,0,X);:PRINT SPC(5);
  327.  NEXT X:COLOR 1,0
  328. LOCATE 23,26:COLOR 3,0:PRINT "Press <ESC> To Return To Top";
  329. WHILE a$<>CHR$(27)
  330.   a$=INKEY$
  331.  WEND
  332. CLS:COLOR 1,0
  333. PRINT "Softball Stats"
  334. RETURN
  335. Regular2:
  336. FOR Y=1 TO P
  337.   PRINT:PRINT Players$(Y);TAB(25);   
  338.   FOR Z=1 TO 6
  339.     PRINT USING "####";Stuff(0,Y,Z);:PRINT SPC(5);
  340.  NEXT Z,Y
  341. PRINT
  342. COLOR 2,0
  343. PRINT "Totals";TAB(25);
  344. FOR X=1 TO 6
  345.   PRINT USING "####";Stuff(0,0,X);:PRINT SPC(5);
  346.  NEXT X:COLOR 1,0
  347. LOCATE 23,26:COLOR 3,0:PRINT "Press <ESC> To Return To Top";
  348. WHILE a$<>CHR$(27)
  349.   a$=INKEY$
  350.  WEND
  351. CLS:COLOR 1,0
  352. PRINT "Softball Stats"
  353. RETURN
  354.  
  355. Prtr:
  356. CLS
  357. PRINT "Print On Printer"
  358. LOCATE 11,30
  359. PRINT "C";:COLOR 2,0:PRINT "umulative or ";:COLOR 1,0:PRINT "G";:COLOR 2,0:PRINT "ame":COLOR 1,0
  360. GetKey3:
  361. a$=UCASE$(INKEY$)
  362. IF a$="C" THEN Cum2
  363. IF a$<>"G" THEN GetKey3
  364. Game2:
  365. CLS
  366. PRINT "Softball Statistics By Game"
  367. LOCATE 11,30:PRINT "Print Which Game? ";
  368. Question ""
  369. IF VAL(Answer$)>G OR VAL(Answer$)<0 THEN Game2
  370. IF Answer$="" OR Answer$="0" THEN
  371.   CLS
  372.   PRINT "Softball Stats"
  373.   RETURN
  374.  END IF
  375. Game=VAL(Answer$)
  376. GOSUB Sort
  377. CLS:PRINT "Print Statistics For Game";Game
  378. LPRINT "Softball Statistics For Game";Game
  379. LPRINT:LPRINT
  380. LPRINT "Name";SPC(22);"AB";SPC(8);"H";SPC(8);"R";SPC(6);"RBI";SPC(7);"BB";SPC(6)"AVG"
  381. LPRINT
  382. IF OldItem=1 THEN Regular3
  383. FOR Y=P TO 1 STEP -1
  384.   LPRINT Players$(Y);TAB(25);   
  385.     LPRINT USING "####";Stuff(Game,Y,1);:LPRINT SPC(5);
  386.     LPRINT USING "####";Stuff(Game,Y,2);:LPRINT SPC(5);
  387.     LPRINT USING "####";Stuff(Game,Y,3);:LPRINT SPC(5);
  388.     LPRINT USING "####";Stuff(Game,Y,4);:LPRINT SPC(5);
  389.     LPRINT USING "####";Stuff(Game,Y,5);:LPRINT SPC(5);
  390.     LPRINT USING "####";Stuff(Game,Y,6)
  391.  NEXT Y
  392. CLS
  393. PRINT "Softball Stats"
  394. RETURN
  395. Regular3:
  396. FOR Y=1 TO P
  397.   LPRINT Players$(Y);TAB(25);   
  398.     LPRINT USING "####";Stuff(Game,Y,1);:LPRINT SPC(5);
  399.     LPRINT USING "####";Stuff(Game,Y,2);:LPRINT SPC(5);
  400.     LPRINT USING "####";Stuff(Game,Y,3);:LPRINT SPC(5);
  401.     LPRINT USING "####";Stuff(Game,Y,4);:LPRINT SPC(5);
  402.     LPRINT USING "####";Stuff(Game,Y,5);:LPRINT SPC(5);
  403.     LPRINT USING "####";Stuff(Game,Y,6)
  404.  NEXT Y
  405. CLS
  406. PRINT "Softball Stats"
  407. RETURN
  408.  
  409. Cum2:
  410. CLS
  411. PRINT "Print Cumulative Softball Statistics Through Game";G
  412. GOSUB Sort:LOCATE 11,1:PRINT SPACE$(60)
  413. LPRINT "Cumulative Softball Statistics Through Game";G
  414. LPRINT:LPRINT
  415. LPRINT "Name";SPC(22);"AB";SPC(8);"H";SPC(8);"R";SPC(6);"RBI";SPC(7);"BB";SPC(6)"AVG"
  416. LPRINT
  417. IF OldItem=1 THEN Regular4
  418. FOR Y=P TO 1 STEP -1
  419.   LPRINT Players$(Y);TAB(25);   
  420.     LPRINT USING "####";Stuff(0,Y,1);:LPRINT SPC(5);
  421.     LPRINT USING "####";Stuff(0,Y,2);:LPRINT SPC(5);
  422.     LPRINT USING "####";Stuff(0,Y,3);:LPRINT SPC(5);
  423.     LPRINT USING "####";Stuff(0,Y,4);:LPRINT SPC(5);
  424.     LPRINT USING "####";Stuff(0,Y,5);:LPRINT SPC(5);
  425.     LPRINT USING "####";Stuff(0,Y,6)
  426.  NEXT Y
  427. LPRINT
  428. LPRINT "Totals";TAB(25);
  429. FOR X=1 TO 6
  430.   LPRINT USING "####";Stuff(0,0,X);:LPRINT SPC(5);
  431.  NEXT X:COLOR 1,0
  432. CLS
  433. PRINT "Softball Stats"
  434. RETURN
  435. Regular4:
  436. FOR Y=1 TO P
  437.   LPRINT Players$(Y);TAB(25);   
  438.     LPRINT USING "####";Stuff(0,Y,1);:LPRINT SPC(5);
  439.     LPRINT USING "####";Stuff(0,Y,2);:LPRINT SPC(5);
  440.     LPRINT USING "####";Stuff(0,Y,3);:LPRINT SPC(5);
  441.     LPRINT USING "####";Stuff(0,Y,4);:LPRINT SPC(5);
  442.     LPRINT USING "####";Stuff(0,Y,5);:LPRINT SPC(5);
  443.     LPRINT USING "####";Stuff(0,Y,6)
  444.  NEXT Y
  445. LPRINT
  446. LPRINT "Totals";TAB(25);
  447. FOR X=1 TO 6
  448.   LPRINT USING "####";Stuff(0,0,X);:LPRINT SPC(5);
  449.  NEXT X:COLOR 1,0
  450. CLS
  451. PRINT "Softball Stats"
  452. RETURN
  453.  
  454. SortType:
  455. MENU 3,MenuItem,2
  456. MENU 3,OldItem,1
  457. OldItem=MenuItem
  458. RETURN
  459.  
  460. Sort:
  461. LOCATE 11,27:PRINT "          SORTING          "
  462. IF OldItem=1 THEN SPlayer
  463. FOR X=1 TO P
  464.   FOR Y=X+1 TO P
  465.     IF Stuff(Game,X,OldItem-1)<Stuff(Game,Y,OldItem-1) THEN NoSwap
  466.     FOR J=0 TO G
  467.     FOR Z=1 TO 6
  468.       SWAP Stuff(J,X,Z),Stuff(J,Y,Z)
  469.      NEXT Z,J
  470.     SWAP Players$(X),Players$(Y)
  471. NoSwap:
  472.    NEXT Y,X
  473. RETURN
  474. SPlayer:
  475. FOR X=1 TO P
  476.   FOR Y=X+1 TO P
  477.     IF Players$(X)<Players$(Y) THEN NoSwap2
  478.     FOR J=0 TO G
  479.     FOR Z=1 TO 6
  480.       SWAP Stuff(J,X,Z),Stuff(J,Y,Z)
  481.      NEXT Z,J
  482.     SWAP Players$(X),Players$(Y)
  483. NoSwap2:
  484.    NEXT Y,X
  485. RETURN
  486.  
  487.